class User:
    def show_name(self):
        print('我是普通用户')


class VipUser(User):
    def show_name(self):
        print('我是VIP用户')
#在这个例子中，如果遵循里氏替换原则，那么任何使用User对象的地方都可以替换成VipUser对象，而不应该导致程序报错或行为不一致。
#具体来说，如果有一个函数或方法接受一个User类型的对象作为参数，并调用其show_name()方法，那么当传入一个VipUser对象时，程序应该能够正常运行，并且show_name()方法应该按照VipUser类的实现来执行，即打印“我是VIP用户”。

def display_user(user):
    user.show_name()


# 使用User对象
normal_user = User()
display_user(normal_user)  # 输出: 我是普通用户

# 使用VipUser对象替换User对象
vip_user = VipUser()
display_user(vip_user)  # 输出: 我是VIP用户